package edu.cibertec.action;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import edu.cibertec.actionform.IndicadorForm;
import edu.cibertec.bean.BeanArea;
import edu.cibertec.bean.BeanDepartamento;
import edu.cibertec.bean.BeanFormula;
import edu.cibertec.bean.BeanIndicador;
import edu.cibertec.bean.BeanProceso;
import edu.cibertec.bean.BeanUsuario;
import edu.cibertec.servicio.AreaService;
import edu.cibertec.servicio.DepartamentoService;
import edu.cibertec.servicio.FormulaService;
import edu.cibertec.servicio.IndicadorService;
import edu.cibertec.servicio.ProcesoService;
import edu.cibertec.servicio.UsuarioService;



public class IndicadorAction extends DispatchAction {
	

	public ActionForward listarIndicadores(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		ArrayList<BeanArea> areas = new ArrayList<BeanArea>();
		AreaService serviceArea = new AreaService();
		areas = serviceArea.getAreas();
		
		ArrayList<BeanDepartamento> departamentos = new ArrayList<BeanDepartamento>();
		DepartamentoService serviceDepartamento = new DepartamentoService();
		departamentos = serviceDepartamento.getDepartamentos();
		
		ArrayList<BeanProceso> procesos = new ArrayList<BeanProceso>();
		ProcesoService serviceProceso = new ProcesoService();
		procesos = serviceProceso.getProcesos();
		
		ArrayList<BeanFormula> formulas = new ArrayList<BeanFormula>();
		FormulaService serviceFormula = new FormulaService();
		formulas = serviceFormula.getFormulas();
		
		ArrayList<BeanUsuario> resAnalisis = new ArrayList<BeanUsuario>();
		ArrayList<BeanUsuario> resIngreso = new ArrayList<BeanUsuario>();
		UsuarioService serviceUsuario = new UsuarioService();
		//usuarios = serviceUsuario.getUsuarios();
		resAnalisis = serviceUsuario.getUsuariosAnalisis();
		resIngreso = serviceUsuario.getUsuariosIngreso();
		

		((IndicadorForm)form).setAreas(areas);
		((IndicadorForm)form).setDepartamentos(departamentos);
		((IndicadorForm)form).setProcesos(procesos);
		((IndicadorForm)form).setFormulas(formulas);
		//((IndicadorForm)form).setUsuarios(usuarios);
		((IndicadorForm)form).setRespAnalisis(resAnalisis);
		((IndicadorForm)form).setRespIngreso(resIngreso);
		
		
		System.out.println("se ha pasado por aqui :O");
		
		IndicadorService service = new IndicadorService();
		ArrayList<BeanIndicador> listadoIndicadores = service.getIndicadores();
		request.setAttribute("listadoIndicador", listadoIndicadores);
		
//		if ((Integer)request.getAttribute("reset") != null ){
			((IndicadorForm)form).reset(mapping, request);
//		}
		return mapping.findForward("listarIndicadores");
		
	}
		
	public ActionForward agregarIndicador(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		BeanIndicador bean = new BeanIndicador();
		
		
		BeanUtils.copyProperties(bean, (IndicadorForm)form);
		
		IndicadorService service = new IndicadorService();
		int resultado = service.insertarIndicador(bean);
				
		return mapping.findForward("listado");
	}
	
	public ActionForward eliminarIndicador(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		BeanIndicador bean = new BeanIndicador();
		bean.setCodigo( Integer.parseInt(request.getParameter("codigo")));
		
		IndicadorService service = new IndicadorService();
		int resultado = service.eliminarIndicador(bean);
				
		return mapping.findForward("listado");
	}
	
	
	public ActionForward obtenerIndicador(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
	
		
		BeanIndicador bean = new BeanIndicador();
		bean.setCodigo( Integer.parseInt(request.getParameter("codigo")));
		System.out.println("se paso aqui pssss: " + bean.getCodigo());
		IndicadorService service = new IndicadorService();
		bean = service.obtenerIndicador(bean);
		
		BeanUtils.copyProperties((IndicadorForm)form, bean);
		System.out.println("bean.getCodigo(): " + bean.getCodigo());
		System.out.println("((IndicadorForm)form).getCodigo: " + ((IndicadorForm)form).getCodigo());
		
//
		ArrayList<BeanArea> areas = new ArrayList<BeanArea>();
		AreaService serviceArea = new AreaService();
		areas = serviceArea.getAreas();
		
		ArrayList<BeanDepartamento> departamentos = new ArrayList<BeanDepartamento>();
		DepartamentoService serviceDepartamento = new DepartamentoService();
		departamentos = serviceDepartamento.getDepartamentos();
		
		ArrayList<BeanProceso> procesos = new ArrayList<BeanProceso>();
		ProcesoService serviceProceso = new ProcesoService();
		procesos = serviceProceso.getProcesos();
		
		ArrayList<BeanFormula> formulas = new ArrayList<BeanFormula>();
		FormulaService serviceFormula = new FormulaService();
		formulas = serviceFormula.getFormulas();
		
		ArrayList<BeanUsuario> resAnalisis = new ArrayList<BeanUsuario>();
		ArrayList<BeanUsuario> resIngreso = new ArrayList<BeanUsuario>();
		UsuarioService serviceUsuario = new UsuarioService();
		//usuarios = serviceUsuario.getUsuarios();
		resAnalisis = serviceUsuario.getUsuariosAnalisis();
		resIngreso = serviceUsuario.getUsuariosIngreso();
		
		((IndicadorForm)form).setAreas(areas);
		((IndicadorForm)form).setDepartamentos(departamentos);
		((IndicadorForm)form).setProcesos(procesos);
		((IndicadorForm)form).setFormulas(formulas);
		//((IndicadorForm)form).setUsuarios(usuarios);
		((IndicadorForm)form).setRespAnalisis(resAnalisis);
		((IndicadorForm)form).setRespIngreso(resIngreso);
		
		
		System.out.println("obtener indicador");
		
		ArrayList<BeanIndicador> listadoIndicadores = service.getIndicadores();
		request.setAttribute("listadoIndicador", listadoIndicadores);	
//
		return mapping.findForward("obtener");
	}
	
	
	public ActionForward actualizaIndicador(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		
		BeanIndicador bean = new BeanIndicador();
		
		BeanUtils.copyProperties(bean, (IndicadorForm)form);
		
		IndicadorService service = new IndicadorService();
		int resultado = service.actualizarIndicador(bean);		

		System.out.println("actualizaIndicador =)");
		return mapping.findForward("listado");
	}
		
}
